python解决非线性方程

您所在的位置:网站首页 sympy 解方程组 python解决非线性方程

python解决非线性方程

2023-08-04 16:05| 来源: 网络整理| 查看: 265

注意:我的观点挂在你y = P * x Q sqrt(S * x T)的原始方程上.

我将使用y = P * x Q x * x *(S * x T)只是为了能够演示同情解算器的工作原理(当它工作时).

战略:

>将y表示为其他变量(x,P,Q,S,T)的函数

>区分你

>使用已知常数(0,c,y(0),y(c),y'(0),y'(c))设置4个方程式

>使用sympy解决

>打印每种可能的解决方案(如果有的话)

码:

# Set up variables and equations

x, y, P, Q, S, T, = sympy.symbols('x y P Q S T')

c, y_0, y_c, dy_0, dy_c = sympy.symbols('c y_0 y_c dy_0 dy_c')

eq_y = P * x + Q + x * x * (S * x + T)

eq_dy = eq_y.diff(x)

# Set up simultaneous equations that sympy will solve

equations = [

(y_0 - eq_y).subs(x, 0),

(dy_0 - eq_dy).subs(x, 0),

(y_c - eq_y).subs(x, c),

(dy_c - eq_dy).subs(x, c)

]

# Solve it for P, Q, S and T

solution_set = sympy.solve(equations, P, Q, S, T, set = True)

# Extract names, individual solutions and print everything

names = solution_set[0]

solutions = list(solution_set[1])

for k in range(len(solutions)):

print('Solution #%d' % (k+1))

for k2, name in enumerate(names):

print('\t%s: %s' % (name, solutions[k][k2]) )

输出:

Solution #1

P: dy_0

Q: y_0

S: (c*(dy_0 + dy_c) + 2*y_0 - 2*y_c)/c**3

T: (-c*(2*dy_0 + dy_c) - 3*y_0 + 3*y_c)/c**2

您现在可以使用这些解决方案中的一个并执行另一个.subs(…)来将y作为一个纯粹由常量和x组成的函数.

至于你原来的等式…我想知道是否有人应该提交一个错误报告,以便他们可以改进它…… 🙂



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3